A Network Video Recorder (“NVR”) is an Internet Protocol (“IP”) based device that is coupled to a communication network. An NVR is a digital server that receives digital images and/or video streams over the network and records them in a digital format. Because they are IP based, NVRs may be managed remotely via, for example, a local area network (“LAN”) or over the Internet. NVRs can simultaneously record and remotely access live video streams from IP cameras.
NVR servers typically send video data to client computers at a resolution that is not ideally matched to the display resolution of the client. This is inefficient for network bandwidth utilization and also client side CPU utilization. For example, if a client is attempting to display 16 images in a 4×4 matrix, the required resolution for each image may be quite modest. However, the server could unnecessarily be delivering 16 D1 or megapixel resolution streams to the client. This wastes network bandwidth and puts the client computer under a much heavier computing load than is necessary. This is particularly important with resource-intensive CODECs such as those using H.264 or MPEG-4 compression standards.
Typically, the above-described problem is alleviated by utilizing a video capture device that is capable of delivering more than one simultaneous stream, where one stream will be delivered for recording and another for live viewing at the client computer. However, multiple streaming from the video capture device is far from the ideal solution. For one, NVR servers are required to support multiple client connections. Therefore, it is not feasible to expect a capture device to deliver the multitude of resolutions that may be required to deliver video to perhaps ten or more separate clients, where each may require different resolutions. Second, this attempt provides no solution for the playback of stored video on the client computer.
Therefore, what is needed is a system and method for intelligently sharing the computer load and network bandwidth between a video server and client computers to allow the video distribution system to minimize network bandwidth while also efficiently distributing available computer resources across the network.